{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-09-24T07:11:31.689281Z",
     "start_time": "2024-09-24T07:11:31.412093Z"
    }
   },
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from catboost import CatBoostRegressor\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import cross_val_score\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "# 显示中文及负号\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] =False"
   ],
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T07:11:33.142094Z",
     "start_time": "2024-09-24T07:11:31.691295Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data = pd.read_excel('../data/Q4_train.xlsx')\n",
    "data = data[(50000 <= data['频率，Hz']) & (data['频率，Hz'] <= 500000)]"
   ],
   "id": "acf5d2911cb81142",
   "outputs": [],
   "execution_count": 2
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T07:11:33.173654Z",
     "start_time": "2024-09-24T07:11:33.144107Z"
    }
   },
   "cell_type": "code",
   "source": "data.head()",
   "id": "71cc9e8cfc4ec80d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   温度，oC  频率，Hz  磁芯材料  励磁波形   磁通密度最大值   磁通密度最小值   磁通密度峰峰值     平均磁通密度变化率  \\\n",
       "0     25  50030     1     1  0.028849 -0.028840  0.057689 -1.724917e-07   \n",
       "1     25  50020     1     1  0.031419 -0.031427  0.062846 -1.887566e-07   \n",
       "2     25  50020     1     1  0.035535 -0.035513  0.071047 -2.110411e-07   \n",
       "3     25  50020     1     1  0.040015 -0.040025  0.080041 -2.391574e-07   \n",
       "4     25  50030     1     1  0.045028 -0.045085  0.090113 -2.689707e-07   \n",
       "\n",
       "     磁芯损耗，w/m3  \n",
       "0  1997.955250  \n",
       "1  2427.749830  \n",
       "2  3332.725760  \n",
       "3  4502.908007  \n",
       "4  6063.023248  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>温度，oC</th>\n",
       "      <th>频率，Hz</th>\n",
       "      <th>磁芯材料</th>\n",
       "      <th>励磁波形</th>\n",
       "      <th>磁通密度最大值</th>\n",
       "      <th>磁通密度最小值</th>\n",
       "      <th>磁通密度峰峰值</th>\n",
       "      <th>平均磁通密度变化率</th>\n",
       "      <th>磁芯损耗，w/m3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>25</td>\n",
       "      <td>50030</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.028849</td>\n",
       "      <td>-0.028840</td>\n",
       "      <td>0.057689</td>\n",
       "      <td>-1.724917e-07</td>\n",
       "      <td>1997.955250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>25</td>\n",
       "      <td>50020</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.031419</td>\n",
       "      <td>-0.031427</td>\n",
       "      <td>0.062846</td>\n",
       "      <td>-1.887566e-07</td>\n",
       "      <td>2427.749830</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>25</td>\n",
       "      <td>50020</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.035535</td>\n",
       "      <td>-0.035513</td>\n",
       "      <td>0.071047</td>\n",
       "      <td>-2.110411e-07</td>\n",
       "      <td>3332.725760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>25</td>\n",
       "      <td>50020</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.040015</td>\n",
       "      <td>-0.040025</td>\n",
       "      <td>0.080041</td>\n",
       "      <td>-2.391574e-07</td>\n",
       "      <td>4502.908007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>25</td>\n",
       "      <td>50030</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.045028</td>\n",
       "      <td>-0.045085</td>\n",
       "      <td>0.090113</td>\n",
       "      <td>-2.689707e-07</td>\n",
       "      <td>6063.023248</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T07:11:33.219537Z",
     "start_time": "2024-09-24T07:11:33.179774Z"
    }
   },
   "cell_type": "code",
   "source": "data.describe()",
   "id": "16097ed25d0616e4",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "              温度，oC          频率，Hz          磁芯材料          励磁波形       磁通密度最大值  \\\n",
       "count  12237.000000   12237.000000  12237.000000  12237.000000  12237.000000   \n",
       "mean      58.226281  189121.962082      2.434338      1.954319      0.077807   \n",
       "std       24.256308  119016.691501      1.122101      0.770464      0.067787   \n",
       "min       25.000000   50000.000000      1.000000      1.000000      0.009638   \n",
       "25%       25.000000   89210.000000      1.000000      1.000000      0.027523   \n",
       "50%       50.000000  158730.000000      2.000000      2.000000      0.050570   \n",
       "75%       70.000000  251240.000000      3.000000      3.000000      0.107184   \n",
       "max       90.000000  499990.000000      4.000000      3.000000      0.312993   \n",
       "\n",
       "            磁通密度最小值       磁通密度峰峰值     平均磁通密度变化率     磁芯损耗，w/m3  \n",
       "count  12237.000000  12237.000000  1.223700e+04  1.223700e+04  \n",
       "mean      -0.077187      0.154994 -6.635937e-07  2.000915e+05  \n",
       "std        0.067424      0.135204  7.127021e-07  3.783783e+05  \n",
       "min       -0.311727      0.019089 -6.013774e-06  4.156131e+02  \n",
       "25%       -0.105390      0.054602 -9.198113e-07  1.027104e+04  \n",
       "50%       -0.050468      0.100544 -4.359247e-07  4.497513e+04  \n",
       "75%       -0.026974      0.214175 -2.022581e-07  2.083816e+05  \n",
       "max       -0.009363      0.624721  1.449011e-06  3.616133e+06  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>温度，oC</th>\n",
       "      <th>频率，Hz</th>\n",
       "      <th>磁芯材料</th>\n",
       "      <th>励磁波形</th>\n",
       "      <th>磁通密度最大值</th>\n",
       "      <th>磁通密度最小值</th>\n",
       "      <th>磁通密度峰峰值</th>\n",
       "      <th>平均磁通密度变化率</th>\n",
       "      <th>磁芯损耗，w/m3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>12237.000000</td>\n",
       "      <td>12237.000000</td>\n",
       "      <td>12237.000000</td>\n",
       "      <td>12237.000000</td>\n",
       "      <td>12237.000000</td>\n",
       "      <td>12237.000000</td>\n",
       "      <td>12237.000000</td>\n",
       "      <td>1.223700e+04</td>\n",
       "      <td>1.223700e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>58.226281</td>\n",
       "      <td>189121.962082</td>\n",
       "      <td>2.434338</td>\n",
       "      <td>1.954319</td>\n",
       "      <td>0.077807</td>\n",
       "      <td>-0.077187</td>\n",
       "      <td>0.154994</td>\n",
       "      <td>-6.635937e-07</td>\n",
       "      <td>2.000915e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>24.256308</td>\n",
       "      <td>119016.691501</td>\n",
       "      <td>1.122101</td>\n",
       "      <td>0.770464</td>\n",
       "      <td>0.067787</td>\n",
       "      <td>0.067424</td>\n",
       "      <td>0.135204</td>\n",
       "      <td>7.127021e-07</td>\n",
       "      <td>3.783783e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>25.000000</td>\n",
       "      <td>50000.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.009638</td>\n",
       "      <td>-0.311727</td>\n",
       "      <td>0.019089</td>\n",
       "      <td>-6.013774e-06</td>\n",
       "      <td>4.156131e+02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>25.000000</td>\n",
       "      <td>89210.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.027523</td>\n",
       "      <td>-0.105390</td>\n",
       "      <td>0.054602</td>\n",
       "      <td>-9.198113e-07</td>\n",
       "      <td>1.027104e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>50.000000</td>\n",
       "      <td>158730.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.050570</td>\n",
       "      <td>-0.050468</td>\n",
       "      <td>0.100544</td>\n",
       "      <td>-4.359247e-07</td>\n",
       "      <td>4.497513e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>70.000000</td>\n",
       "      <td>251240.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.107184</td>\n",
       "      <td>-0.026974</td>\n",
       "      <td>0.214175</td>\n",
       "      <td>-2.022581e-07</td>\n",
       "      <td>2.083816e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>90.000000</td>\n",
       "      <td>499990.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.312993</td>\n",
       "      <td>-0.009363</td>\n",
       "      <td>0.624721</td>\n",
       "      <td>1.449011e-06</td>\n",
       "      <td>3.616133e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T07:11:33.235295Z",
     "start_time": "2024-09-24T07:11:33.221518Z"
    }
   },
   "cell_type": "code",
   "source": "max(data['频率，Hz'] * data['磁通密度最大值'])",
   "id": "ecb236ccd2928ab6",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "77608.97970619"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "import pandas as pd\n",
    "import optuna\n",
    "from catboost import CatBoostRegressor\n",
    "\n",
    "# 读取训练数据\n",
    "train_data = pd.read_excel('../data/Q4_train.xlsx')\n",
    "X_train = train_data.iloc[:, :5]\n",
    "y_train = train_data['磁芯损耗，w/m3'].values\n",
    "\n",
    "# 定义目标函数\n",
    "def objective(trial):\n",
    "    # 设置超参数\n",
    "    params = {\n",
    "        'iterations': trial.suggest_int('iterations', 100, 1000),\n",
    "        'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.3),\n",
    "        'depth': trial.suggest_int('depth', 4, 10),\n",
    "        'l2_leaf_reg': trial.suggest_float('l2_leaf_reg', 1e-3, 10.0),\n",
    "    }\n",
    "\n",
    "    # 创建并训练模型\n",
    "    model = CatBoostRegressor(**params, verbose=0, random_state=42, loss_function='RMSE')\n",
    "    model.fit(X_train, y_train)\n",
    "\n",
    "    # 返回验证集的RMSE\n",
    "    return model.get_best_score()['learn']['RMSE']\n",
    "\n",
    "# 超参数优化\n",
    "study = optuna.create_study(direction='minimize')\n",
    "study.optimize(objective, n_trials=150)\n",
    "\n",
    "# 获取最佳参数\n",
    "best_params = study.best_trial.params\n",
    "best_value = study.best_trial.value\n",
    "print(\"最佳参数组合：\", best_params)\n",
    "print(\"最佳得分：\", best_value)\n",
    "\n",
    "# 创建并训练最佳CatBoost模型\n",
    "catboost_model = CatBoostRegressor(**best_params, verbose=0, random_state=42, loss_function='RMSE')\n",
    "catboost_model.fit(X_train, y_train)\n",
    "\n",
    "\"\"\"\n",
    "最佳参数组合： {'iterations': 982, 'learning_rate': 0.2999279191775813, 'depth': 10, 'l2_leaf_reg': 0.0029642195299421983}\n",
    "最佳得分： 9222.034229990242\n",
    "\"\"\""
   ],
   "id": "f8a5e0355c5a673a",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T17:13:57.638694Z",
     "start_time": "2024-09-24T17:13:22.276236Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from tqdm import tqdm\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from deap import base, creator, tools, algorithms\n",
    "import random\n",
    "\n",
    "# 定义目标函数1：最小化磁芯损耗\n",
    "def objective_loss(params):\n",
    "    input_data = np.array(params).reshape(1, -1)\n",
    "    prediction = catboost_model.predict(input_data)[0]\n",
    "    # 检查预测结果，如果为负数则返回无穷大\n",
    "    if prediction < 0:\n",
    "        return float('inf')\n",
    "\n",
    "    return prediction\n",
    "\n",
    "# 定义目标函数2：最大化传输磁能\n",
    "def objective_energy(params):\n",
    "    _, f, _, _, B_max = params\n",
    "    return -f * B_max\n",
    "\n",
    "# 定义适应度函数\n",
    "creator.create(\"FitnessMulti\", base.Fitness, weights=(-1.0, -1.0))\n",
    "creator.create(\"Individual\", list, fitness=creator.FitnessMulti)\n",
    "\n",
    "# 个体初始化\n",
    "def create_individual():\n",
    "    return creator.Individual([rand.uniform(25, 90),\n",
    "                               rand.uniform(50000, 500000),\n",
    "                               rand.randint(1, 3),\n",
    "                               rand.randint(1, 4),\n",
    "                               rand.uniform(0.01, 0.35)])\n",
    "\n",
    "def evaluate(individual):\n",
    "    individual[2] = int(individual[2])\n",
    "    individual[3] = int(individual[3])\n",
    "\n",
    "    for i in range(len(individual)):\n",
    "        if individual[i] < low[i] or individual[i] > up[i]:\n",
    "            return (float('inf'), float('inf'))\n",
    "\n",
    "    T = individual[0]\n",
    "    f = individual[1]\n",
    "    waveform = individual[2]\n",
    "    material = individual[3]\n",
    "    B_max = individual[4]\n",
    "\n",
    "    loss = objective_loss([T, f, waveform, material, B_max])\n",
    "    energy = objective_energy([T, f, waveform, material, B_max])\n",
    "\n",
    "    return loss, energy\n",
    "\n",
    "def bounded_mutate(individual, low, up, indpb, eta):\n",
    "    for i in range(len(individual)):\n",
    "        if rand.random() < indpb:\n",
    "            if i == 2 or i == 3:\n",
    "                individual[i] = rand.randint(low[i], up[i])\n",
    "            else:\n",
    "                delta = (up[i] - low[i]) * rand.random()\n",
    "                if rand.random() < 0.5:\n",
    "                    individual[i] += delta ** (1.0 / (eta + 1))\n",
    "                else:\n",
    "                    individual[i] -= delta ** (1.0 / (eta + 1))\n",
    "\n",
    "                individual[i] = max(low[i], min(up[i], individual[i]))\n",
    "\n",
    "    return individual,\n",
    "\n",
    "    \n",
    "\n",
    "low = [25.00, 50000.00, 1, 1, 0.01]\n",
    "up = [90.00, 500000.00, 3, 4, 0.35]\n",
    "rand = random.Random(42)\n",
    "# 进化算法参数\n",
    "population_size = 300\n",
    "generations = 100\n",
    "mutation_probability = 0.09\n",
    "crossover_probability = 0.9\n",
    "hof = tools.HallOfFame(1)\n",
    "\n",
    "# 注册必要的工具\n",
    "toolbox = base.Toolbox()\n",
    "toolbox.register(\"individual\", create_individual)\n",
    "toolbox.register(\"population\", tools.initRepeat, list, toolbox.individual)\n",
    "toolbox.register(\"mate\", tools.cxSimulatedBinaryBounded, low=low, up=up, eta = 20)\n",
    "toolbox.register(\"mutate\", tools.mutPolynomialBounded, low=low, up=up, eta=20, indpb=0.5)\n",
    "# toolbox.register(\"mutate\", bounded_mutate, low=low, up=up, indpb=0.5, eta=20)\n",
    "toolbox.register(\"select\", tools.selNSGA2)\n",
    "toolbox.register(\"evaluate\", evaluate)\n",
    "\n",
    "\n",
    "# 初始化种群\n",
    "population = toolbox.population(n=population_size)\n",
    "\n",
    "# 用于存储每代的最优适应度\n",
    "best_fitnesses = []\n",
    "\n",
    "# 运行NSGA-II算法\n",
    "for gen in tqdm(range(generations), desc=\"Running Generations\"):\n",
    "    algorithms.eaMuPlusLambda(population, toolbox, mu=population_size, lambda_=population_size,\n",
    "                               cxpb=crossover_probability, mutpb=mutation_probability, ngen=1,\n",
    "                               stats=None, halloffame=hof, verbose=False)\n",
    "\n",
    "    # 记录当前代的最优适应度\n",
    "    best_fitness = hof[0].fitness.values\n",
    "    best_fitnesses.append(best_fitness)"
   ],
   "id": "3c31f08e26c5c6a2",
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Running Generations: 100%|██████████| 100/100 [00:35<00:00,  2.83it/s]\n"
     ]
    }
   ],
   "execution_count": 461
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T17:13:58.123356Z",
     "start_time": "2024-09-24T17:13:57.645796Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 可视化每代的最优解\n",
    "best_losses = [fit[0] for fit in best_fitnesses]\n",
    "best_energies = [-fit[1] for fit in best_fitnesses]\n",
    "\n",
    "plt.figure(figsize=(12, 6))\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.plot(range(generations), best_losses, label='Best Loss')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Loss')\n",
    "plt.title('Best Loss Over Generations')\n",
    "plt.grid(True)\n",
    "plt.legend()\n",
    "\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.plot(range(generations), best_energies, label='Best Energy', color='orange')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Energy')\n",
    "plt.title('Best Energy Over Generations')\n",
    "plt.grid(True)\n",
    "plt.legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ],
   "id": "1a44f1a91107b76c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x600 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACZUElEQVR4nOzdeXxU1d3H8e/MJCGBIAlEARG1GoJlkxgNq6BoBEUIBii0EYEKWBq1tQYVQUGRxQVF4AERRLSiICCyiEJxQxEwIFUfayzpYytK2cIWspBk5j5/JDNk2LJNcnLD5/16pSVzZ27OnAnO5Tu/8zsOy7IsAQAAAAAAANXIaXoAAAAAAAAAOP8QSgEAAAAAAKDaEUoBAAAAAACg2hFKAQAAAAAAoNoRSgEAAAAAAKDaEUoBAAAAAACg2hFKAQAAAAAAoNoRSgEAAAAAAKDaEUoBtZxlWaaHAJvjdwgAUJvxPoeagt9FnI+CTA8AOF8MGTJEX375pd9t9evXV6tWrXTvvfcqPj4+oD8vPz9f06dPV+vWrdW3b9+z3q9Hjx6Kj4/XtGnTAvrzAyk7O1uvvfaaPvjgA/30008KCQnRFVdcoTvuuEP9+/dXUJD5/5QdOXJEb775pv72t7/p559/Vn5+vpo1a6abbrpJv//97xUZGWl6iBUyd+5cBQcHa8SIEZKkWbNmafbs2frhhx8MjwwAUNvU1GulM42rpNatW+udd94J6NhMOXTokBYsWKCPPvpIe/bsUb169RQTE6NBgwbptttuMz08SdLevXv1xhtv6JNPPtEvv/wiSbr88svVq1cvDRkyRHXr1jU8wvI70+/iI488oi+//FIfffSR4dEBVcv8v+SA80irVq00YcIESZLb7dbhw4f11ltv6e6779Y777yjFi1aBOxn7d+/X4sWLdLUqVMDdk4T/vvf/2r48OE6fPiwhgwZori4OJ04cUJffPGFJk+erLVr12rOnDmqX7++sTH+85//1D333KOCggLdeeedatu2rVwul/7+97/rtdde07p167R06VJFRUUZG2NFzZgxQ/fee6/v+4EDB+r66683OCIAQG1WU6+VSo7rVHYMQc4kPT1dI0aMkMvl0tChQ9W6dWtlZWXpww8/1IMPPqj169frueeeU3BwsLExbtu2Tffff78uuOACJScnq2XLlvJ4PNq2bZteeuklrV+/Xm+++aZCQ0ONjbEizvS7+Mc//lF33XWXwVEB1YNQCqhG4eHhat++vd9tnTt3VqdOnfTOO+/o4YcfNjOwGsqyLN1///3Kzc3VypUrdfHFF/uO3XDDDbr11lt111136cknn9Szzz5rZIwnTpzQn//8ZzkcDq1atUqNGjXyHevYsaN69+6txMREzZw5U08++aSRMQZSkyZN1KRJE9PDAADUUjX1WulM46pNcnNz9cc//lGNGjXSa6+9poiICN+xm2++WTfeeKPuu+8+/epXv9Kf//xnI2M8dOiQHnjgATVv3lyvv/66XxjYpUsX3XzzzRo8eLBee+013XPPPUbGGEiXXnqp6SEA1YKeUoBhYWFhqlOnjhwOh9/tGzduVFJSktq2basuXbroqaeeUk5Oju/4iRMn9MQTT6hbt25q06aNevXqpYULF0qSfv75Z910002SpLFjx6pHjx6VHue6deuUlJSk2NhYdenSRY8//riOHj1apvF4/fWvf1WvXr3Utm1bXX/99Zo4caKOHz9+1p/56aef6ptvvlFqaqpfIOUVGxuroUOHavXq1frpp5/01VdfqWXLltq4caPf/f71r3+pZcuWev/9931jfeaZZ9S9e3e1adNGffr00bp16/we06NHD02ZMkVDhw7VNddco8cff/yMY3z//ff1r3/9S48//rhfIOXVvHlzjR49+rRjpb2+s2bNUkJCgj755BP16dNHbdq0Uc+ePbVy5Uq/8xw5ckSPP/64OnfurLZt2+o3v/mNtmzZ4nefli1bavbs2erfv7/i4uI0Z84cSVJaWpruvvtuXXfddWrTpo169OihWbNmyePx+B4nSbNnz/b9edasWb4/e5X2u1HW51Le3w8AwPnBLtdKUtH1w8yZM/X000+rc+fOateune6++279+OOPfvfbvn277rzzTl199dWKj4/Xww8/rEOHDvmOv/POO2rVqpWWLVumrl27qlu3btq1a5ck6ZVXXtFNN92kdu3aafDgwfroo4/UsmVLbdu2Tbt27VLLli21dOlSv5+3b98+/frXvz7tvbfkz/vll180YcIEv0DK65ZbbtFtt92mRYsWKTs7W2vWrFHLli2Vnp7ud79PP/1ULVu21DfffCOpctcpp3rzzTeVmZmpqVOnnrE6rV27dho6dKjq1avnd/uyZcvUu3dvtWnTRjfccINmzZqlwsJC3/FHHnlEw4YN04oVK9SzZ0+1adNGffv21aeffup3nj179ugvf/mL4uPjdfXVV2vo0KH6xz/+4Tv+888/q2XLlnr11Vd16623Kj4+3resc+PGjfrd736n2NhY3+/iG2+84XvcmX4XH3nkEb/fS7fbrcWLF6tPnz5q166dbrjhBj333HM6ceJEuZ6Lx+PRiy++qB49eviu/55//nkVFBSccd6BKmcBqBZ33nmnlZycbBUUFFgFBQVWfn6+tX//fuu5556zrr76aisjI8N339WrV1sxMTHWgw8+aH366afWm2++aV133XXW0KFDLY/HY1mWZT322GPWjTfeaK1du9baunWr9cwzz1gxMTHWihUrrBMnTlgbNmywYmJirBdeeMH67rvvzjquG2+80Xr44YfPOfb/+Z//sWJiYqyJEydamzZtshYvXmzFx8dbffr0sXJzc0sdj2VZ1tq1a63WrVtbr7/+urVt2zbrrbfestq3b3/On/3kk09aV111lZWVlXXW+/zjH/+wYmJirFdffdWyLMtKSEiwHnjgAb/7vPDCC1ZcXJyVl5dneTwe6+6777ZiY2OtV1991dq0aZP12GOPWTExMdbKlSv95qVVq1bW5MmTrc8//9zavn37GX9+SkqKdd1111lut/ucc1hSWV7fmTNnWldffbV14403Wm+//ba1efNm6/e//70VExPj+13Jy8uz+vbta3Xu3Nl6++23rU8++cS67777rFatWllffPGF7+fFxMRYrVq1subNm2d98sknVnp6uvX9999brVq1sv7yl79Yn332mbVp0ybrwQcftGJiYqzVq1dblmVZO3futGJiYqxHH33U2rlzp29cMTExvnOX5XejLM+lIr8fAIDapaZeK506rlO/vD/PsoquH+Li4qxRo0ZZn3zyibVq1SorPj7e+s1vfuO7z5dffmm1bt3auvvuu62PPvrIWrlypXXDDTdYvXv39r13rlixwoqJibF69Ohhffzxx9aKFSssj8djzZo1y7rqqqusZ5991vrss8+sKVOmWO3atbNiYmKsrVu3WpZlWQMHDrR++9vf+j2HefPmWe3bt7eys7PP+Bzvueceq0OHDud8ff72t79ZMTEx1oYNG6zc3FwrNjbWeu655/zuk5qaavXs2dOyrMpdp5xJv379rD59+pxzjKd66aWXrJYtW1qTJk2yPvvsM+vll1+22rZta40dO9Z3n4cfftiKi4uzbr31Vmvt2rXWJ598Yt1xxx1Wu3btrCNHjliWZVmZmZnW9ddfb91yyy3W6tWrrb/97W/WnXfeabVv3973e7l7924rJibGatu2rbVs2TJr/fr11i+//GJ9/PHHVkxMjPXUU09ZX3zxhfXRRx/5roN27Nhx1t/Fhx9+2Lrxxht943z00UetVq1aWc8//7z1+eefWy+//LJ19dVXW7///e99v4NleS4vvfSSdd1111nLly+3tm3bZr388svWr3/9a2vmzJnlmlsgUFi+B1SjtLQ0tW7d+rTb//KXv+jKK6+UVLRk7bnnntP111+v5557znefyy+/XMOGDdOnn36qG264QV9++aU6d+6s3r17S5I6dOigunXrKjIyUiEhIfr1r38tqaj0t1WrVhUe89GjRzV37lwNHDjQr5dCTEyMkpOT9c477+h3v/vdOccjFfUAaNasmZKTk+V0OhUfH6+6devq8OHDZ/3ZP//8syIiIhQeHn7W+3hLm3/++WdJUt++ffXKK68oNzdXYWFhkqT33ntPvXr1Up06dbR582Z99tlneuGFF3wNO6+//nrl5ubqueee0+233+5rnH7RRRfpkUcekdN59qLSn376Sc2bNz/tPm63+7QdVIKCgsr8+kpFpfSTJ09Wp06dfPe58cYb9emnn+rKK6/UqlWrlJ6errfffltXX321JKlbt24aMmSInnvuOa1YscJ3/nbt2mnUqFG+799991117txZzz77rG/sXbp00SeffKK0tDT16dPHt0yhSZMmZ1yyUNbfjbI8l4r8fgAAap+aeq10tnFJ0jPPPKPExETf9xdccIHmzJkjl8slqehaYdasWTp8+LAiIyM1ffp0/epXv9K8efN897n66qvVu3dvrVixQsnJyb5z/eEPf/BdF+Tk5Gj+/PlKTk5WamqqJKlr167Kzc31q4zq37+/Hn/8ce3evVvNmzeXVPS+f+utt561/9XPP/+sSy655Jxz4L3m+uWXXxQaGqqePXtq3bp1evDBByVJeXl5+vDDDzVy5EhJqtR1ypn89NNP6tKly2m3l6x68goKClJWVpbmzp2rQYMGafz48ZKK5isiIkLjx4/X8OHDfT3KsrKy9M477/ieY926dXXnnXdq69at6tmzp1577TUdOXJEb731lpo1a+Z7LrfddptefPFFzZw50/ezb7nlFg0YMMD3/bp169SvXz+NGzfOd1tsbKw6dOigtLQ0XXPNNaX+LmZkZGj58uX685//rNGjR0squm676KKL9NBDD2nTpk3q3r17mZ7Ll19+qdatW6t///6SpPj4eIWFhZ3zehuoSoRSQDVq3bq1nnjiCUlFF1THjh3Tpk2b9MILLygnJ0cPPPCA/u///k979+7VPffc4/cme9111yk8PFybN2/WDTfcoA4dOmjJkiXat2+fbrzxRnXv3l0pKSkBH/Pf//535efnq0+fPn63X3vttWrWrJm2bdum3/3ud6WOp2PHjlq6dKmSkpJ0yy236IYbblCfPn1OK8UvybKsUnfWO/V4YmKiZs2apY8//li33XabvvnmG/3000+aMmWKJGnLli1yOBzq3r273/z26NFDq1ev1q5du3wXBldeeeU5AynvGM/kxhtv1L59+/xu+/DDD3XixIkyvb5eJcMgby8n79KELVu26MILL1Tr1q39znXjjTfqmWee0dGjR9WgQQNJRUFRSf369VO/fv104sQJ/fTTT/rPf/6j7777Tm63u8zl22X93SjLc6nI7wcAoPapqddKJcd1Km/w4+Xd8MTL+56Xm5ur0NBQff3117r77rtlWZZv/M2bN9eVV16pzZs3+4VSJd+///73vysvL0+9evXy+3m33367XyjVu3dvTZ06VatWrdK9996rb775Rv/617/O2duyLNdc3ufkvfbp27ev3nnnHX399de6+uqr9dFHHyknJ8d3XVCZ65Qz8bYXKKmwsPCMYeEPP/ygnTt3Kjc3Vz169Djtmk+SNm/e7AulGjZs6NfDqeRr5n0uv/71r9W4cWPfuZxOp7p166bVq1f7/exTn4t3B+OcnBz99NNP+vHHH/Xtt99KUpmvuby7P556zdW7d2+NHTtW27Zt84VSpT2XDh06aPr06frd736nhIQEdevWTXfeeWeZxgFUBUIpoBrVq1dPbdu29buta9euysnJ0YIFC3TXXXfpyJEjkqQnnnjijBc/+/fvlySNGzdOTZo00erVq333i42N1eOPP16pyqhTeXsDnWnnuKioKGVlZZVpPLfddps8Ho/efPNNzZ49Wy+++KKaNWumBx980PcJ5qmaNWumzZs3Ky8v76y7qOzevVuSfD2nmjdvrmuuuUbvvfeebrvtNq1Zs0bNmjXTtddeK6mot4FlWbrmmmvOeL79+/f7Qqmy7JbXrFkzff3117Isyy9Aefnll30XGp988olmz57t+/lS6a+vl7faS5IvIPNeDB45ckQHDhw46ye3Bw4c8F3snfpc8vLyNGnSJK1atUqFhYW65JJLFBsb66vmKouy/m6U5blU5PcDAFD71NRrpTON62xKvt9JJ9/zPB6Pjh07Jo/Ho/nz52v+/PmnPbZOnTp+35fsSentOdWwYUO/+5z6PhweHq5evXpp9erVuvfee7Vy5UpddtllvmuhM2nWrJm+//77cz4vb1W695qrY8eOatq0qd577z1dffXVWrt2ra699lpfxVVlrlPO5JJLLtEvv/zid1tQUJCWL1/u+/7tt9/W22+/7fv5ks5agVXymuvU18x7TecNwo4cOaL//Oc/Z30u3sDnTM/l0KFDmjBhgjZu3CiHw6HLLrtMcXFxks7+4eapvNdcF154od/tQUFBioyM9LvmKu25jBgxQvXq1dOKFSv09NNPa9q0aYqJidGjjz7qq2gHqhOhFFAD/PrXv9ayZcv0888/64ILLpAkPfTQQ4qPjz/tvt4375CQEI0ePVqjR4/Wnj179PHHH2vOnDl68MEHfQ29A8H78w4ePOgrm/c6cOCA79PBsozn9ttv1+23366srCx9/vnnmj9/vsaMGaNrr71WjRs3Pu1n9+jRQ2+++aY2btyo22+//Yzj++CDD3z39UpMTNTkyZOVlZWl999/X/379/e9IdevX19169bV66+/fsbzXXbZZeWZHt100036+OOP9eWXX6pDhw6+26+66irfn72NSSWV+fUti/r16+vyyy/3W7pQ0rnK8CdPnqz169drxowZ6ty5s6+cvzwXI2X93Sir8v5+AADOHzX5Wqk86tWrJ4fDoWHDhp3xQ5dTA4WSvBUvhw4d0hVXXOG7vWSDdK/+/ftr5cqV+uabb7R+/XoNGTLknOPq0aOHPv30U+3cuVOxsbFnvM8HH3yg0NBQ3xI6h8OhPn36aNWqVUpJSdGmTZv8lvNX5jrlbGOcN2+e37JESX5h4SeffOL7s/f35LnnntPll19+2vnKEoR51a9fX/Hx8XrooYfOeDwkJOSsj01NTdW//vUvvfrqq7rmmmsUEhKi3NxcLVu2rMw/3/s7feDAAb95Kygo8C0LLSun06nk5GQlJycrMzNTn376qV566SXdd999+uKLL875XICqwO57QA2wc+dOuVwuNW/eXFdccYUaNWqkn3/+WW3btvV9NWnSRNOnT9c//vEP5eXlqWfPnr4dZC6++GIlJyerd+/e2rt3ryT5lY1XxtVXX62QkBCtWbPG7/bt27drz549uuaaa8o0nj//+c+69957JRW9sd9666364x//KLfbfVp1kFeXLl0UFxenp59++rRPxiTp22+/1YIFC3Tbbbf5XWzceuutkqQXX3xRBw4cUN++fX3H4uPjlZOTI8uy/OZ3165d+p//+Z8z9iU4l9tvv11XXHGFHn/88bM+j5KhVFle37KKj4/Xf//7XzVq1MjvXFu2bNGCBQvO+TuwY8cOdejQQTfffLMvkPrf//1fHTp0yK88/lzLF8vyu1FWFfn9AACcP2rytVJ5hIeHq1WrVvq///s/v7G3aNFCs2fP1rZt28762Kuuukr169fXhg0b/G5fv379afe97rrrdPnll+vZZ5/V4cOH1a9fv3OOq2/fvrrsssv0+OOP+yqMSvr444/17rvvasiQIX69hxITE7Vv3z7NmjVLDofDb2lhZa5TzuTOO+9Uw4YN9fDDD59xd163263/+7//831/9dVXKzg4WPv27fP7+cHBwZo+fbqv8qss4uPj9eOPP+pXv/qV37lWr16tZcuWlXrN1bNnT3Xs2NEX+GzatEnSyeql0ubCG76ees313nvvye12+yqvymLw4MF66qmnJBVV4iUlJSk5OVlZWVnsegwjqJQCqtHx48f197//3fd9QUGBPvzwQ61Zs0aDBg3ylWM/8MADevzxx+VyuXTjjTfq2LFjmjNnjvbt26fWrVsrNDRUrVu31uzZsxUcHKyWLVvqxx9/1MqVK9WzZ09JRf+wl4rWwF955ZW+BpNnkpGRoUWLFp12e/v27dW+fXuNGjXK97Nuuukm/fzzz3rxxRcVHR2tpKSkMo2nY8eOmjBhgp5++ml169ZNx44d0+zZs3X55Zf7VRWV5HQ6NX36dI0aNUpJSUkaOnSoYmNj5fF49MUXX2jx4sVq1arVaaX7DRo00I033qg333xTbdu29avi6d69u6677jr98Y9/1B//+EddeeWV+uabbzRr1ix17dr1tJL40oSFhWn27Nn64x//qD59+mjw4MG65pprVKdOHe3atUsrV67Ud999p27duqlhw4ZyuVylvr5llZSUpDfeeEPDhw/XH/7wBzVt2lRffPGF5s+frzvvvFPBwcFnfWy7du30/vvv66233tKVV16p9PR0zZ07Vw6Hw68E/YILLtDOnTuVlpZ2Wtl/REREqb8bZVWR3w8AQO1TU6+VTh3Xqdq0aVNqTyavv/zlLxo1apQefPBB9e3bV263WwsXLtTXX3/ta2J9JuHh4RoxYoRmzpypsLAwxcfH68svv9Rbb70l6fQPkvr376/p06erS5cuatq06TnHVLduXc2aNUv33HOP+vXrp2HDhqlVq1bKzc3VRx99pOXLl+umm27Sn/70J7/HRUdHq3Xr1nrzzTeVkJDgm1OpctcpZ3LhhRdq1qxZ+tOf/qQ+ffpo0KBBatOmjZxOp7777jstX75c//73v319lyIjIzVixAi9+OKLOn78uDp06KB9+/bpxRdflMPhKNf1xbBhw7Rq1SoNGzZMv//97xUZGal169bp7bff1tixY8/52Hbt2mnNmjVq3bq1mjRpop07d2revHl+11yl/S5GR0frjjvu0OzZs5WXl6cOHTro+++/1+zZs9WhQwddf/31ZX4u1113nRYuXKioqCjFxsZq3759evXVVxUfH1/u62AgEAilgGr0j3/8Q4MGDfJ9X6dOHV166aV64IEHdPfdd/tuHzhwoOrVq6cFCxZo6dKlqlu3rq655ho999xzvnLlJ598UjNmzNDChQt14MABNWrUSAMGDPBdLISHh2v48OFaunSpPvnkE23evPms5bjffvutr+FiSffee6/at2+v++67T1FRUXrjjTe0bNkyRUREqFevXvrzn//sKzMvbTyDBw9WQUGBlixZojfffFOhoaHq1KmTxowZc86LkqZNm2rp0qV66623tHbtWt8na1deeaUeeeQRDRgw4IwXgX379tX69ev9qqSkogu2l19+WS+++KLmzZunzMxMNW7cWMOGDatw89Mrr7xSK1eu1Ntvv633339fS5YsUXZ2ti666CJdd911euSRR/yWF5Tl9S2LunXravHixZo+fbqeffZZZWVl+fow/f73vz/nYx955BEVFBRoxowZys/P1yWXXKLRo0crIyNDH330kdxut1wul/7whz9ozpw5GjlypNatW3faecryu1EWFf39AADULjX1WunUcZ1qy5YtZf4HfdeuXfXKK69o9uzZuv/++xUcHKzWrVvr1VdfPeNutyXdc8898ng8Wrp0qV555RVdffXVSk1N1dSpU0/bWe+GG27Q9OnTy/whUcuWLfXOO+/ojTfe0PLly/Xzzz8rNDRUV111lZ555pmz9nhMTEzUd999d9o1V2WuU84mLi5Oq1ev1ltvvaX169drwYIFys/PV9OmTdWxY0e98MILfv3C/vznP+vCCy/Um2++qQULFqhBgwbq1KmT/vKXv/gFaKVp3LixlixZounTp2vixIk6ceKELr/8ck2ePNlvp70zmTZtmiZNmqRJkyZJKtol8oknntDq1au1fft2SWf+XTzV5MmTddlll2nFihV65ZVXdNFFF2nIkCFKSUkpdWOekv70pz8pJCREK1as0P/8z/+ofv366tGjh28XRaC6OayydlcDAAAAABhRWFiotWvXqkOHDn6VT4sXL9ZTTz2lbdu2+fooSdL8+fO1YMECffbZZ/QJAlBjUSkFAAAAADVcUFCQ5s+fr9dee02jR49WZGSk0tPT9eKLL6pfv36+QGrlypX65z//qTfffFOjRo0ikAJQo1EpBQAAAAA2sHv3bj3//PPatm2bjh07posvvlh9+/bVPffc41vuPnXqVC1ZskQ333yzpk6dSigFoEYjlAIAAAAAAEC1K3tHNAAAAAAAACBACKUAAAAAAABQ7QilAAAAAAAAUO0IpQAAAAAAAFDtCKUAAAAAAABQ7YJMD8CUzMwsBXrfQYdDatSofpWcG6Vj/s1i/s3jNTCL+TcrkPPvPRdKV1W/7/x9Mov5N4v5N4v5N4v5N8vE9dR5G0pZlqrsl7wqz43SMf9mMf/m8RqYxfybxfxXr6qeb15Ps5h/s5h/s5h/s5h/s6pz/lm+BwAAAAAAgGpHKAUAAAAAAIBqRygFAAAAAACAanfe9pQCACCQPB6P8vLyVFCQTw8EAxwOlXn+Xa4gOZ18LgcAAGAaoRQAAJVgWZaOHTuk3NzjOnDAKY/HY3pI561Dh8o+/2Fh4brggoZyOBxVPCoAAACcDaEUAACV4A2kwsMjVbduqNxu0yM6f7lcDrnd5y6TsixL+fkndPz4YUlSgwaNqmNoAAAAOANCKQAAKsjjcfsCqfDwCxQU5FRhIZVSppR1/kNC6kiSjh8/rPr1I1nKBwAAYAhXYQAAVJC7uCzKG3LAPryvmdtdaHgkAAAA5y9CKQAAKom+RPbDawYAAGAeoRQAAAAAAACqHaEUAAAIqOPHj+vw4cOmhwEAAIAajlAKAIDzTNeu16pHjy5KSLheN9/cVb163ahHHvmL9u3bG5DzDx7cTz/++K8zHlu3bo0GDOgTkJ8DAAAAeyOUAgDgPPTccy/qb3/7TBs3fq4VK9bIsixNmvR4QM595MiRgJwHAAAAtVuQ6QEAAFCbWJalvEJPtf7M0CBnpRp316sXrj597tDEiY/6bsvJydZLL83W559vUn5+vuLirtWf/pSqhg0bSZJeeWWe3ntvtXJzc9Ws2SUaNuxude3aXb/9bZIkKTX1T7r77lFKTh5arrEcPXpEL730P/rii00qLCxU69Ztdd99f1Hz5pee8+cWFhbq+een65NPPpLbXajLLvuV/vCHe9WuXfsKzwsAAACqFqEUAAABYlmWRiz5Wt/sOVatP/fqiy/Q/MFXVziYOnbsmDZuXK/u3Xv4bpsy5Unl5GTrlVf+qjp1QjVr1gt69NExmjv3Fe3cuUOrV6/UK6+8oUaNGmnVqnc0bdokvftuF7311jvq2vVaPffci7rmmmvLPZZx4x6Sy+XSwoWLFR4ervnzX9Kf/jRaf/3rUv3wQ/pZf+769ev07bdfa/Hi5apbt64WLHhJ06c/rddee6tCcwIAAICqRygFAEAAVbxeqXo9/PADcrlc8ngs5eRkKzw8XM88M0OSdPjwIX3yyYd6883lioxsKEn6058eVM+e3fXDD+kKCQlRVtYxrV79jrp06aY+ffopMTGpUtVakvTLLz/r73//Sn/969tq1ChKkjR69H3629/e15Ytm9WkSdOz/tw6depoz549Wrt2lTp27KyRI0frnntSKjUeAAAAVC1CKQAAAsThcGj+4KttsXzv6adf8FUynTiRpxUrlun++/+gefMWye0ulCSNGjXM7zEuV5D++99fdOONN+upp57R8uVL9Oabrys0NFQDBgzWXXf9Xk5nxdtVHj58SJJ08cXNSvxMly66qIn++9//6uabe5715958c095PG6tWrVSL7/8P4qMbKi77hqufv0GVHg8AAAAqFqEUgAABJDD4VBYsMv0MMqlTp1Q/e53Q/TGG4u0ffs29ex5myRp8eLlvoolSfrxx//TxRc30969e9WwYUM9//xsFRQUaPv2bRo37iHFxFylzp27VngcTZpcLKmoYuqKK66UJLndbu3bt1dRUVHn/LmXXNJcV131a91y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h6+vlJtMCgAAoOLoKQUAgC0RShnkLC6X8nhIpQAAACqKnlIAANgToZRB3iV87L4HAABQCb5KKS5tAQCwE965DfI2O6dQCgAAoBIsekoBAGBHhFIGuXyhFKkUAABAxXmK/o9KKQAAbIV3boMcvuV7ZscBAAACb8iQIXr33XeVm5treii1Hj2lAACwJ0Ipg1w0OgcAoNa64YYb9Morr6hr164aN26cvvrqK9NDqr0sb6UUoRQAAHZCKGWQt6eUm+V7AADUOnfffbfWrFmj119/XWFhYbr//vvVq1cvzZ8/X/v37zc9vNrF1+icUAoAADshlDKI3fcAAKj9WrdurbFjx2ry5MmqW7eupk+froSEBN1///3as2eP6eHVEjQ6BwDAjgilDGL3PQAAardvvvlGTz31lK6//nqNHTtW1113nVatWqVPP/1UDRo00B/+8AfTQ6wV6CkFAIA9BZkewPmMSikAAGqvXr166eeff1bXrl01ceJE9ejRQ0FBJy+97rrrLv32t781OMJawttPSmL3PQAAbKZCodT//u//qk2bNjp27JjmzZunhg0baujQoX4XWiidr1KKUikAAGqdpKQk3XHHHbrwwgvPePyyyy7TJ598Ur2Dqo28/aQkQikAAGym3CnS3LlztWDBAu3YsUNPPfWU/vd//1dOp1N79+7VuHHjqmKMtZbTyfI9AABqq9jYWP373//Wv//9b7/bg4OD1bBhQ1166aUKCQkxM7japGQoRU8pAABspdyh1Nq1a7V48WLl5+dr/fr1Wrp0qS688EL17duXUKqcXCzfAwCg1nrkkUe0Z88eOZ1ORUZG6vDhw/J4PHI6nXK73briiis0b948NW/e3PRQbe5kKEVPKQAA7KXcNc779+/XVVddpR07dqh+/fq66qqr1KhRI+Xm5lbF+Go1R/HyPTehFAAAtU7fvn3Vt29fffnll/r888+VlpamAQMG6N5779WOHTvUtWtXTZ482fQwbc/h11OKUAoAADspdyjVuHFjpaWl6d1331WnTp0kFVVP8Slf+bmKQykyKQAAap93331XEydOVL169SRJdevW1aOPPqqlS5eqXr16evDBB/XVV18ZHmUt4NdTilAKAAA7Kffyvfvuu08jRoxQaGio3nrrLW3ZskVjx47VrFmzqmJ8tZqzOBJ001QKAIBaJycnR8eOHVNYWJjvtqysLB0/ftz3vbdqGpVAKAUAgG2VO5Tq2bOnbrjhBklSnTp11LhxY3344Ye66KKLAj22Ws+3+x6lUgAA1Dq9evVSSkqK/vKXv+jiiy/Wnj17NHPmTN1yyy06fvy4nnrqKV177bWmh1kLlFi+V/5FAAAAwKByv3N7PB5t2rRJderU0b59+zRu3Di99NJLfp/6oWxOhlKGBwIAAALu0UcfVatWrZSSkqJevXrpj3/8o9q0aaPHHntM6enpOnbsmCZMmGB6mLbnKK6UsuSQqDwDAMBWyl0pNW3aNK1fv14JCQmaMGGCjh8/riNHjujJJ5/UM888UxVjrLWc7L4HAECttXHjRo0bN06PP/64jhw5okaNGvmW61177bVUSQWKd/keS/cAALCdcodSn376qd566y1lZ2fr888/13vvvadGjRrppptuqorx1WreSim3p5Q7AgAA23niiSd0yy23KCgoSFFRUaaHU3sRSgEAYFvlXr53+PBhXXzxxUpLS9NFF12kyy67TGFhYXK73aU/GH6cvt33qJQCAKC2adu2rdatW2d6GLWfr9E5oRQAAHZT7kqp5s2b691339UHH3ygrl27yuPxaOHChYqOjq6K8dVqruJIkOV7AADUPkeOHNHDDz+sxx57TFFRUX477X344YcGR1bbFJWcW1RKAQBgO+UOpR555BE9/PDDCg0N1ZNPPqmtW7fqlVde0UsvvVQV46vVvBenbjIpAABqnTvvvNP0EM4LDqu4DwKhFAAAtlPuUOq6667TRx995Ps+IiJCmzZtUkhISEAHdj5wFX9gyvI9AABqnzvuuMP350OHDqlhw4YGR1OL+XpKlbsrBQAAMKxC794bN27UyJEjddttt2nkyJFav359oMd1XvA1OieUAgCg1iksLNQLL7yguLg49ejRQ7t371b//v114MAB00OrXWh0DgCAbZU7lFqzZo0eeeQRxcTEaMiQIWrVqpUmTpyoZcuWVcX4ajVvKOVh9z0AAGqdWbNmaevWrXrxxRcVHBysRo0aqUmTJnrqqadMD62WKQqlrIp91goAAAwq9/K9+fPna/bs2erYsaPvtu7du+vJJ5/UwIEDAzq42s5Jo3MAAGqtNWvW6K233lLjxo3lcDhUt25dTZ06VQkJCaaHVqs4qJQCAMC2yv2R0p49e9ShQwe/2+Lj47V3796ADep84auUIpQCAKDW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u3ev1SUAAAA0e2Qq4MrGUAqA5Q4fPqynn35aKSkp6tatm7p3764//vGP+vzzz60u7ZwWLVqkyZMnux+npaXp/ffft7AiAAAAMhWA5oehFABL7dy5U+np6aqtrdVrr72mL774QmvXrlV6errGjh2rdevWWV3iLxw7dqze4w8++EDp6ekWVQMAAECmAtA8MZQCYKmnnnpKSUlJeuGFF9S+fXv5+voqLCxMd911l55++mk5HA5J0oYNG5SRkaH4+Phf/C/apEmT9NRTT+nhhx9WbGys+vXrpwULFrift9vtysvLU+/evdWjRw89/vjjqqiokCQdPHhQnTp1Un5+vhISEvTss8+qtrZW06ZN05133qnY2Fj16NFDzz33nIwxWrFihebOnauSkhLFx8dLklJSUvTuu+9Kks6cOaPp06erd+/eSkhI0MiRI/XVV1+5a+nUqZPeeustDRgwQLGxsbr33nv1/fffe7zPAADg8kamIlMBzZIBAIuUlpaamJgYs2HDhl/d7rvvvjO33HKLWbNmjamrqzNffPGFSUxMNJ9++qkxxpiJEyeaLl26mPXr1xuHw2EWL15sbrrpJlNWVmaMMeaRRx4xo0ePNhUVFcZut5vc3FwzfPhw43K5zIEDB0xMTIzJzc01NTU1prq62vztb38zaWlppry83BhjzJdffmluvvlmd50zZ840mZmZ7vr69u1r3nnnHXctgwcPNnv37jU1NTWmsLDQxMbGmkOHDhljjImJiTHDhw83R44cMSdOnDBZWVlm9OjRjdtYAABwRSFTkamA5oozpQBYpqysTJIUFRXlXtu4caPi4+MVHx+v2NhYDRgwQEuWLFG/fv10xx13yNfXV7fddpuGDRumRYsWuV+XmJiopKQk+fn5aejQoXI6ndq/f78qKyu1Zs0a5eTkqE2bNgoJCdGTTz6pr7/+Wtu3b3e/fsiQIQoICFBoaKiGDRumwsJCRUZG6siRIzpz5oxCQkJUXl7+q5+npqZGRUVFGjdunH7zm98oICBA999/v2688UYVFRW5txs5cqQiIyPVqlUr3XnnnVzgEwAAXBIyFZkKaK78rC4AwJUrMjJSklReXq4bbrhBktSjRw+VlJRIkt59913NmjVLhw4dUnFxsfvUbklyOp26/vrrf7EvSfL395ckuVwuHTp0SJI0bNiweu/t6+urgwcPKiwsTJJ09dVXu587ffq08vLytGXLFkVFRenmm2+WMUYul+tXP091dbUcDoeuu+66euvXXXedDh486H4cERHh/rWfn5+MMb+6XwAAgF9DpiJTAc0VQykAlrn22mvVtWtXLVu2TLfffvu/3S4qKkp333238vLy3GtHjhw5r+DRtm1bSdJHH31UL2Tt3r1b0dHROnr0qCTJx8fH/Vxubq6uuuoqrV+/XoGBgXK5XEpISGjwvSIiIhQYGKgDBw6offv27vX9+/crJSWlwdcDAABcDDIVgOaKr+8BsNTUqVP12WefafLkyfrxxx9ljJHdbtfKlSv1yiuv6Oqrr1ZGRoaKioq0fv16uVwu7d27V5mZmXrjjTca3H/btm3Vp08fTZkyRcePH5fD4dDs2bOVkZGhEydOnPM1drtdgYGBstlsstvtmj59uux2u/sCoYGBgbLb7b8IcDabTUOHDlVBQYH27dun2tpazZ8/X7t371ZaWtqlNwsAAODfIFMBaI4YSgGwVExMjIqKihQUFKSHH35YcXFx6t27t5YuXaoxY8ZowYIFuvXWW1VQUKCCggIlJCQoMzNTKSkpGjdu3Hm9x/Tp0xUaGqohQ4bo9ttv17p16/T666/X+1++/y83N1c7duxQ9+7d9dvf/lZ2u129evXSzp07JUl9+/ZVVVWV4uLifhHCJkyYoOTkZGVlZSkxMVEfffSR5s2b5z6VHgAAwBPIVACaIx/DF28BAAAAAADgZZwpBQAAAAAAAK9jKAUAAAAAAACvYygFAAAAAAAAr2MoBQAAAAAAAK9jKAUAAAAAAACvYygFAAAAAAAAr2MoBQAAAAAAAK9jKAUAAAAAAACvYygFAAAAAAAAr2MoBQAAAAAAAK9jKAUAAAAAAACvYygFAAAAAAAAr/tf6zon9UA9z3MAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 462
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T17:13:58.389146Z",
     "start_time": "2024-09-24T17:13:58.126724Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.cluster import KMeans\n",
    "\n",
    "# Pareto前沿\n",
    "pareto_front = tools.sortNondominated(population, len(population), first_front_only=True)[0]\n",
    "# 提取帕累托前沿的适应度值\n",
    "pareto_fitness_values = [ind.fitness.values for ind in pareto_front]\n",
    "\n",
    "# 解包适应度值\n",
    "fitness_values_1 = np.array([values[0] for values in pareto_fitness_values])\n",
    "fitness_values_2 = np.array([-values[1] for values in pareto_fitness_values])\n",
    "\n",
    "# 使用K-means选择代表性解\n",
    "kmeans = KMeans(n_clusters=5)\n",
    "kmeans.fit(pareto_fitness_values)\n",
    "\n",
    "centroids = kmeans.cluster_centers_\n",
    "representative_indices = []\n",
    "for centroid in centroids:\n",
    "    distances = np.linalg.norm(pareto_fitness_values - centroid, axis=1)\n",
    "    representative_indices.append(np.argmin(distances))\n",
    "\n",
    "representative_solutions = [pareto_front[i] for i in representative_indices]\n",
    "\n",
    "# 可视化结果\n",
    "plt.scatter(fitness_values_1, fitness_values_2, label='Pareto Front')\n",
    "plt.scatter(fitness_values_1[representative_indices], fitness_values_2[representative_indices], color='red', marker='x',label='Representative Solutions')\n",
    "plt.xlabel('Loss')\n",
    "plt.ylabel('Energy')\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "id": "2023ac6c3df5659b",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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MGzYMEREREAulyMtLQ3Dhg0zaMPb2xsXLlxAYWEhsrKy4Ovrq1+nUqng6OiIixcvAgCcnJzg5uamX+/l5YXMzEwUFBSgUaNGovst9eToVe1x0vVHx1pKg3WUDmspHdZSGuZYR7HHarKhSafTIT4+HuPGjYO9vT0AoLCwEAEBARgzZgzee+89/Pbbb4iOjoZcLkdERASKioqgVCoN2lEoFCguLkZRUREAwNbWttr6qnX37lv1uri42KjQ5OrqYNzBNnC75oi1lAbrKB3WUjqspTRYx+pMNjSlpKTg1q1bCAsL0y/r3r07unfvrn/dvn17vPrqq0hOTkZERASUSiVKS0sN2iktLYWzs7M+AFWNb7p7vZ2dHQRBqLau6rWdnZ1Rfc/JKYSUzy+Wye58eKVu1xyxltJgHaXDWkqHtZSGOdax6phrY7Khad++fQgODjY4M3TgwAGo1WqMGjVKv6y8vBwKhQIA4OPjg9TUVIN20tLS0KNHDzg6OsLNzQ1paWn6S3TZ2dnIy8uDr68vdDod8vLyoFaroVKpAADp6elwd3eHg4NxaVsQUCcftLpq1xyxltJgHaXDWkqHtZQG61idyQ4EP3XqFJ599lmDZYIgYPHixTh69CgEQcCZM2ewYcMG/d1zYWFh2L17N44dO4aKigokJCQgJycHwcHBAIDQ0FDEx8cjIyMDGo0GixYtQkBAAFq0aIFWrVrB398fixYtgkajQUZGBtauXWtwpouIiIjMl8meabp27RqaNGlisCw4OBgzZszAvHnzcPPmTahUKrz99tsYPHgwAKBr166YO3eufr23tzfWr18PJycnAEB0dDS0Wi3Cw8NRVFSEwMBArFq1St9+XFwcFixYgL59+0Iul2PIkCGIioqqr0MmIiIiEyYTBJ58k5paLf2YJpXKQfJ2zRFrKQ3WUTqspXRYS2mYYx2rjrk2Jnt5joiIiMiUMDQRERERicDQRERERCQCQxMRERGRCAxNRERERCIwNBERERGJwNBEREREJAJDExEREZEIDE1EREREIjA0EREREYnA0EREREQkAkMTERERkQgMTUREREQiMDQRERERicDQRERERCQCQxMRERGRCAxNRERERCIwNBERERGJwNBEREREJAJDExEREZEIDE1EREREIjA0EREREYnA0EREREQkAkMTERERkQgMTUREREQiMDQRERER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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 463
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T17:13:58.404696Z",
     "start_time": "2024-09-24T17:13:58.391643Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 输出Pareto前沿的代表解\n",
    "for i in range(len(representative_solutions)):\n",
    "    print(f\"解 {i+1}: {representative_solutions[i]} \\n\"\n",
    "          f\"磁芯损失: {fitness_values_1[representative_indices[i]]}, \"\n",
    "          f\"最大传输磁能: {fitness_values_2[representative_indices[i]]}\")"
   ],
   "id": "8c6201a397b74c5a",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "解 1: [66.46220714489736, 316294.9606793176, 1, 1, 0.07827907131428606] \n",
      "磁芯损失: 163932.46070918028, 最大传输磁能: 24759.275783365607\n",
      "解 2: [81.19967689542142, 211670.74244022198, 1, 3, 0.08603941901144023] \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 3: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242] \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 4: [68.4825597975039, 188530.1499642062, 1, 3, 0.06236681523006937] \n",
      "磁芯损失: 4955.066230318655, 最大传输磁能: 11758.025028114918\n",
      "解 5: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199] \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n"
     ]
    }
   ],
   "execution_count": 464
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T17:13:58.419853Z",
     "start_time": "2024-09-24T17:13:58.408324Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 输出所有 Pareto 最优解及其适应度值\n",
    "for i, ind in enumerate(pareto_front):\n",
    "    print(f\"解 {i+1}: {ind}, \\n\"\n",
    "          f\"磁芯损失: {ind.fitness.values[0]}, 最大传输磁能: {-ind.fitness.values[1]}\")"
   ],
   "id": "38c020bb0afda06",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "解 1: [85.91159665800267, 251174.87027068954, 1, 3, 0.06237077736454568], \n",
      "磁芯损失: 22706.748556490726, 最大传输磁能: 15665.971913221822\n",
      "解 2: [85.91159665800267, 251174.87027068954, 1, 3, 0.06237077736454568], \n",
      "磁芯损失: 22706.748556490726, 最大传输磁能: 15665.971913221822\n",
      "解 3: [85.29087929329006, 251174.87027068954, 1, 3, 0.06237077736454568], \n",
      "磁芯损失: 22706.748556490726, 最大传输磁能: 15665.971913221822\n",
      "解 4: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 5: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 6: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 7: [67.30860344470759, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 8: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 9: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 10: [67.30860344470759, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 11: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 12: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 13: [67.8058411956401, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 14: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 15: [67.38973489836684, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 16: [67.17212312654766, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 17: [67.8058411956401, 499974.85664652544, 1, 1, 0.3083288278315242], \n",
      "磁芯损失: 213061.22483227224, 最大传输磁能: 154156.66149505755\n",
      "解 18: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 19: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 20: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 21: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 22: [84.56490035143968, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 23: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 24: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 25: [84.41807980843883, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 26: [83.61628616772997, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 27: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 28: [84.35455481948956, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 29: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 30: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 31: [88.8401369715688, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 32: [82.38135252313685, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 33: [84.48824528273902, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 34: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 35: [84.41807980843883, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 36: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 37: [82.38135252313685, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 38: [83.57883058788393, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 39: [84.41901455967692, 211670.7624606768, 1, 1, 0.06224136441633487], \n",
      "磁芯损失: 10734.81460538297, 最大传输磁能: 13174.67706259844\n",
      "解 40: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 41: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 42: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 43: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 44: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 45: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 46: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 47: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 48: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 49: [84.67970260636565, 251174.72952323811, 1, 3, 0.08603808484298199], \n",
      "磁芯损失: 108984.49665617729, 最大传输磁能: 21610.592689133413\n",
      "解 50: [84.70851773902854, 316329.274554514, 1, 1, 0.06237084908443895], \n",
      "磁芯损失: 72683.26007795699, 最大传输磁能: 19729.725444229643\n",
      "解 51: [85.1789551609123, 316329.274554514, 1, 1, 0.06237084908443895], \n",
      "磁芯损失: 72683.26007795699, 最大传输磁能: 19729.725444229643\n",
      "解 52: [85.18542057009421, 251174.83856470376, 1, 3, 0.08749035130068508], \n",
      "磁芯损失: 133545.96068338145, 最大传输磁能: 21975.374863918794\n",
      "解 53: [81.01039311667938, 188529.5498233936, 1, 1, 0.04409968861201037], \n",
      "磁芯损失: 153.92447121808073, 最大传输磁能: 8314.094441374153\n",
      "解 54: [81.20028854805408, 188529.5498233936, 1, 1, 0.04409968861201037], \n",
      "磁芯损失: 153.92447121808073, 最大传输磁能: 8314.094441374153\n",
      "解 55: [81.56843103515662, 188529.5498233936, 1, 1, 0.04409968861201037], \n",
      "磁芯损失: 153.92447121808073, 最大传输磁能: 8314.094441374153\n",
      "解 56: [81.01039311667938, 188529.5498233936, 1, 1, 0.04409968861201037], \n",
      "磁芯损失: 153.92447121808073, 最大传输磁能: 8314.094441374153\n",
      "解 57: [81.01039311667938, 188529.5498233936, 1, 1, 0.04409968861201037], \n",
      "磁芯损失: 153.92447121808073, 最大传输磁能: 8314.094441374153\n",
      "解 58: [66.02028048888533, 223849.0564100694, 1, 3, 0.07826510197827262], \n",
      "磁芯损失: 58529.498096473195, 最大传输磁能: 17519.569227674183\n",
      "解 59: [65.94814570771703, 223849.0564100694, 1, 3, 0.07826510197827262], \n",
      "磁芯损失: 58529.498096473195, 最大传输磁能: 17519.569227674183\n",
      "解 60: [66.02028048888533, 223849.0564100694, 1, 3, 0.07826510197827262], \n",
      "磁芯损失: 58529.498096473195, 最大传输磁能: 17519.569227674183\n",
      "解 61: [66.91645350410546, 223849.0564100694, 1, 3, 0.07826510197827262], \n",
      "磁芯损失: 58529.498096473195, 最大传输磁能: 17519.569227674183\n",
      "解 62: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 63: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 64: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 65: [68.41795634435522, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 66: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 67: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 68: [68.19832796799042, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 69: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 70: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 71: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 72: [64.55855077153633, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 73: [64.5842909270118, 473225.88614882965, 1, 1, 0.3083735702007631], \n",
      "磁芯损失: 197358.5603093979, 最大传输磁能: 145930.35602313446\n",
      "解 74: [54.50197320181805, 188529.62264272672, 1, 3, 0.02736204215197363], \n",
      "磁芯损失: 14.442219737306004, 最大传输磁能: 5158.555481645971\n",
      "解 75: [55.794145720168785, 188529.62264272672, 1, 3, 0.02736204215197363], \n",
      "磁芯损失: 14.442219737306004, 最大传输磁能: 5158.555481645971\n",
      "解 76: [56.000697827876735, 188529.62264272672, 1, 3, 0.02736204215197363], \n",
      "磁芯损失: 14.442219737306004, 最大传输磁能: 5158.555481645971\n",
      "解 77: [54.50197320181805, 188529.62264272672, 1, 3, 0.02736204215197363], \n",
      "磁芯损失: 14.442219737306004, 最大传输磁能: 5158.555481645971\n",
      "解 78: [54.50197320181805, 188529.62264272672, 1, 3, 0.02736204215197363], \n",
      "磁芯损失: 14.442219737306004, 最大传输磁能: 5158.555481645971\n",
      "解 79: [81.19967689542142, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 80: [81.19967689542142, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 81: [81.19967689542142, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 82: [84.73497980263319, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 83: [81.19967689542142, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 84: [81.15325499997927, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 85: [84.73497980263319, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 86: [84.73497980263319, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 87: [82.54789140525014, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 88: [81.19967689542142, 211670.74244022198, 1, 3, 0.08603941901144023], \n",
      "磁芯损失: 63428.90238883041, 最大传输磁能: 18212.027701276904\n",
      "解 89: [26.586473727349535, 499984.2241741449, 1, 1, 0.34999996343560297], \n",
      "磁芯损失: 270391.403246215, 最大传输磁能: 174994.46017932903\n",
      "解 90: [26.586473727349535, 499984.2241741449, 1, 1, 0.34999996343560297], \n",
      "磁芯损失: 270391.403246215, 最大传输磁能: 174994.46017932903\n",
      "解 91: [26.586473727349535, 499984.2241741449, 1, 1, 0.34999996343560297], \n",
      "磁芯损失: 270391.403246215, 最大传输磁能: 174994.46017932903\n",
      "解 92: [83.78463187699668, 421832.1650046994, 1, 3, 0.0172856563045563], \n",
      "磁芯损失: 66.38191914759227, 最大传输磁能: 7291.645822478115\n",
      "解 93: [85.18512935540161, 316322.1128352284, 1, 1, 0.07866065804278809], \n",
      "磁芯损失: 197155.1329950721, 最大传输磁能: 24882.10554910413\n",
      "解 94: [85.18512935540161, 316322.1128352284, 1, 1, 0.07866065804278809], \n",
      "磁芯损失: 197155.1329950721, 最大传输磁能: 24882.10554910413\n",
      "解 95: [82.84110425911204, 335145.2230947634, 1, 1, 0.062363702662704676], \n",
      "磁芯损失: 92335.96117651358, 最大传输磁能: 20900.89704190765\n",
      "解 96: [82.84110425911204, 335145.2230947634, 1, 1, 0.062363702662704676], \n",
      "磁芯损失: 92335.96117651358, 最大传输磁能: 20900.89704190765\n",
      "解 97: [83.50311542372498, 335145.2230947634, 1, 1, 0.062363702662704676], \n",
      "磁芯损失: 92335.96117651358, 最大传输磁能: 20900.89704190765\n",
      "解 98: [83.42662879083653, 335145.2230947634, 1, 1, 0.062363702662704676], \n",
      "磁芯损失: 92335.96117651358, 最大传输磁能: 20900.89704190765\n",
      "解 99: [89.29582210298976, 316323.58252322424, 1, 1, 0.07827929928398342], \n",
      "磁芯损失: 184844.7751736941, 最大传输磁能: 24761.588386917298\n",
      "解 100: [89.29582210298976, 316323.58252322424, 1, 1, 0.07827929928398342], \n",
      "磁芯损失: 184844.7751736941, 最大传输磁能: 24761.588386917298\n",
      "解 101: [66.46220714489736, 316294.9606793176, 1, 1, 0.07827907131428606], \n",
      "磁芯损失: 163932.46070918028, 最大传输磁能: 24759.275783365607\n",
      "解 102: [66.46220714489736, 316294.9606793176, 1, 1, 0.07827907131428606], \n",
      "磁芯损失: 163932.46070918028, 最大传输磁能: 24759.275783365607\n",
      "解 103: [66.0644927052639, 251174.46187104806, 1, 3, 0.0625420888095438], \n",
      "磁芯损失: 40907.93025985223, 最大传输磁能: 15708.97550102846\n",
      "解 104: [27.285467589992106, 499972.9685286717, 1, 1, 0.34999998660704196], \n",
      "磁芯损失: 229829.5415908737, 最大传输磁能: 174990.5322889181\n",
      "解 105: [27.285467589992106, 499972.9685286717, 1, 1, 0.34999998660704196], \n",
      "磁芯损失: 229829.5415908737, 最大传输磁能: 174990.5322889181\n",
      "解 106: [66.05183471665013, 499963.07082478615, 1, 1, 0.30832942060756496], \n",
      "磁芯损失: 206384.24608780813, 最大传输磁能: 154153.32395258528\n",
      "解 107: [37.060738223078474, 499999.9811308395, 1, 1, 0.34999999585829017], \n",
      "磁芯损失: 272961.511557505, 最大传输磁能: 174999.99132493898\n",
      "解 108: [68.00413521030329, 188529.5383566122, 1, 3, 0.06211558041316485], \n",
      "磁芯损失: 3552.831215857528, 最大传输磁能: 11710.621700046993\n",
      "解 109: [82.92871382088738, 188529.47530353378, 1, 1, 0.044431659188991245], \n",
      "磁芯损失: 3257.241374088917, 最大传输磁能: 8376.677393765955\n",
      "解 110: [82.92871382088738, 188529.47530353378, 1, 1, 0.044431659188991245], \n",
      "磁芯损失: 3257.241374088917, 最大传输磁能: 8376.677393765955\n",
      "解 111: [82.92672082116742, 211670.73897848336, 1, 3, 0.07933248900991251], \n",
      "磁芯损失: 56539.9026624806, 最大传输磁能: 16792.36657373059\n",
      "解 112: [84.75261999670784, 251174.72822999742, 1, 3, 0.06224078096455264], \n",
      "磁芯损失: 11228.390185870347, 最大传输磁能: 15633.311243594306\n",
      "解 113: [83.43433176313415, 316320.9826638564, 1, 1, 0.06254584945769782], \n",
      "磁芯损失: 77432.67596094792, 最大传输磁能: 19784.564562004605\n",
      "解 114: [83.43433176313415, 316320.9826638564, 1, 1, 0.06254584945769782], \n",
      "磁芯损失: 77432.67596094792, 最大传输磁能: 19784.564562004605\n",
      "解 115: [84.04409851894555, 266481.1518857225, 1, 1, 0.06224116427432746], \n",
      "磁芯损失: 49082.33989902417, 最大传输磁能: 16586.09715053126\n",
      "解 116: [83.5646606457377, 299244.20807668194, 1, 1, 0.07636414713739162], \n",
      "磁芯损失: 160228.71523732788, 最大传输磁能: 22851.528735579974\n",
      "解 117: [68.4825597975039, 188530.1499642062, 1, 3, 0.06236681523006937], \n",
      "磁芯损失: 4955.066230318655, 最大传输磁能: 11758.025028114918\n",
      "解 118: [85.14523057772851, 316195.8760074158, 1, 1, 0.076356550753129], \n",
      "磁芯损失: 162575.36372241814, 最大传输磁能: 24143.62645429033\n",
      "解 119: [85.10198953603019, 316322.35898253176, 1, 1, 0.062238798729018094], \n",
      "磁芯损失: 66228.95998845994, 最大传输磁能: 19687.523634202003\n",
      "解 120: [73.60915743869786, 499972.9685286717, 1, 1, 0.34999999176359914], \n",
      "磁芯损失: 269344.098746363, 最大传输磁能: 174990.53486705731\n",
      "解 121: [85.69289292150293, 251174.8049249106, 1, 1, 0.062371118542513336], \n",
      "磁芯损失: 40094.180958843644, 最大传输磁能: 15666.053532864262\n",
      "解 122: [86.4130525587497, 223848.4111019593, 1, 3, 0.09820323024760484], \n",
      "磁芯损失: 147673.81046287675, 最大传输磁能: 21982.637056006213\n"
     ]
    }
   ],
   "execution_count": 465
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-24T15:07:14.645080Z",
     "start_time": "2024-09-24T15:07:14.631076Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "ae0b0fdd477f76fe",
   "outputs": [],
   "execution_count": 290
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "1f5b8f859402cbfe"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Math",
   "language": "python",
   "name": "math"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
